home *** CD-ROM | disk | FTP | other *** search
- *= $4000 ;startadresse $4000
-
- ;---------------------------------------
- ;--------variablen setzen---------------
- ;---------------------------------------
-
- irqlow = $0314 ;irq-vektor lowbyte
- irqhig = $0315 ; highbyte
- oldirq = $ea31 ;alte irq-routine
-
- initmusic = $1000 ;musik initialisieren
- playmusic = $1003 ;abspielen
-
- flashcount = $fb ;zaehler 1 und 2
- flashcount2 = $fc ;fuer flash-effekte
-
- scrhelp = $03fb ;hilfsregister f.
- scrollreg = $d016 ;scrollregister
-
- charset = $d018 ;zeichens. definieren
- raster = $d012 ;rasterstrahl-pos
- yscroll = $d011 ;y-scroll-register
- imr = $d01a ;irq mask register
-
- ;---------------------------------------
- ;--------irq vorbereiten----------------
- ;---------------------------------------
-
- sei ;irq sperren
-
- jsr init ;initialisieren
-
- lda #<start ;lowbyte laden
- sta irqlow ;und speichern
- lda #>start ;highbyte laden
- sta irqhig ;und speichern
-
- lda yscroll ;y-scroll-register
- and #$7f ;richtig
- sta yscroll ;setzen
-
- lda #$7f ;timer
- sta $dc0d ;setzen
-
- lda #$01 ;raster-irq
- sta imr ;festlegen
-
- lda #$00 ;musik
- jsr initmusic;initialisieren
- cli ;irq freigeben
- jmp * ;endlos-schleife
-
- ;---------------------------------------
- ;--------irq-hauptschleife--------------
- ;---------------------------------------
-
- start lda yscroll ;warten bis
- bpl start ;unterer rand
- ;erreicht
- lda #$1a ;zeichensatz
- sta charset ;umschalten
- lda #$c8 ;scrollreg
- sta scrollreg ;setzen
-
- jsr playmusic ;musik spielen
-
- lda #$38 ;auf rasterline
- st1 cmp raster ;$38
- bne st1 ;warten
-
- jsr rastershow;raster-farben
- jsr scroll ;farben scrollen
-
- lda #$8c ;auf rasterline
- st2 cmp raster ;$8c
- bne st2 ;warten
-
- lda #$1c ;kleinen zeichen
- sta charset ;satz ein
-
- jsr flash ;3 linien flashen
-
- lda #$b8 ;auf rasterline
- st3 cmp raster ;$b8
- bne st3 ;warten
-
- jsr charscroll;scrollroutine
- jsr charflash ;farbscrolling
-
- jmp oldirq ;alter irq
-
- ;---------------------------------------
- ;--------sub-routinen-------------------
- ;---------------------------------------
-
- flash ldy #$77 ;3lines=$77 chars
- ldx flashcount;counter holen
- lda flashtab,x;und byte
- flash1 sta $da08,y ;schreiben solang
- dey ;bis alle drei
- bpl flash1 ;zeilen fertig
- inc flashcount;counter+1
- cpx #$18 ;schon 18 werte?
- bne flashend ;nein dann ende
- lda #$00 ;ja dann zaehler
- sta flashcount;zuruecksetzen
- flashend rts ;ende
-
- flashtab ;farbwerte
- .byte $02,$02,$02,$0a,$0a,$0a
- .byte $07,$07,$07,$0f,$0f,$0f
- .byte $07,$07,$07,$0a,$0a,$0a
- .byte $02,$02,$02,$00,$00,$00
-
- ;---------------------------------------
-
- charflash
- ldy $db20 ;farbram von
- ldx #$00 ;$db20 bis
- charfl1 lda $db21,x;$db47
- sta $db20,x;endlos
- inx ;rotieren
- cpx #$27 ;das y-reg dient
- bne charfl1;als zwischen-
- sty $db47 ;speicher
- rts ;ende
-
- flashtab2 ;farbtabelle
- .byte $06,$06,$06,$04,$04,$04
- .byte $0e,$0e,$0e,$03,$03,$03
- .byte $0f,$0f,$0f,$01,$01,$01
- .byte $01,$01,$01,$0f,$0f,$0f
- .byte $03,$03,$03,$0e,$0e,$0e
- .byte $04,$04,$04,$06,$06,$06
- .byte $00,$00,$00,$00
- tabend2
- ;---------------------------------------
-
- charscroll
- ldx scrhelp ;register holen
- dex ;und zweimal
- dex ;dekrementieren
- ;(scrollspeed)
- stx scrhelp ;in hilfs & scrreg
- stx scrollreg;schreiben
- cpx #$bf ;schon unterlauf?
- beq hardscr ;dann hardscroll
- rts ;ende
-
- hardscr ldx #$c7 ;register
- stx scrollreg;zurueck-
- stx scrhelp ;setzen
-
- ldx #$00 ;bildschirmzeile
- hard1 lda $0721,x ;um eins
- sta $0720,x ;nach
- inx ;links
- cpx #$27 ;rotieren
- bne hard1 ;
-
- change lda text ;textbyte laden
- cmp #$00 ;schon abbruch?
- bne cont ;nein dann cont
- lda #<text ;lowbyte
- sta change+1 ;schreiben
- lda #$20 ;und akku auf
- sta $0747 ;leerzeichen
- rts ;ende
- cont sta $0747 ;zeichen schreiben
- inc change+1 ;change im code
- ;um eins addieren
- scrend rts ;ende
-
- text .text " "
- .text "
- "
- .text " "
- .text " "
- .text " 255"
- .text " "
- .text "
- "
- .text " "
- .text " "
- .byte $00
-
- ;---------------------------------------
-
- rastershow
- ldx #$00 ;zaehler auf $00
- color1 lda coltab,x;farbwert holen
- ldy waitab,x;wait-wert holen
- wait1 dey ;herunterzaehlen
- bne wait1 ;um die zyklen
- ;auszugleichen
- sta $d021 ;farbe
- sta $d021 ;schreiben
- inx ;zaehler+1
- cpx #$40 ;schon 40 farben?
- bne color1 ;nein dann color1
- lda #$00 ;ja dann screen
- sta $d020 ;auf schwarz
- sta $d021 ;setzen
- rts ;ende
-
- coltab
- .byte $06,$04,$0e,$03,$07,$0f
- .byte $01,$01,$0f,$07,$03,$0e
- .byte $06,$04,$00,$00,$09,$02
- .byte $0a,$07,$0f,$01,$01,$0f
- .byte $07,$0a,$02,$09,$00,$00
- .byte $09,$0b,$08,$0c,$0f,$07
- .byte $01,$01,$0f,$0c,$08,$0b
- .byte $09,$00,$00,$02,$0a,$07
- .byte $0f,$01,$0b,$0c,$0f,$01
- .byte $01,$0f,$0c,$0b,$01,$0f
- .byte $07,$0a,$02,$00,$00
- colend
- waitab
- .byte $09,$08,$08,$01,$08,$08
- .byte $08,$08,$08,$08,$08,$01
- .byte $08,$08,$08,$08,$08,$08
- .byte $08,$01,$08,$08,$08,$08
- .byte $08,$08,$08,$01,$08,$08
- .byte $08,$08,$08,$08,$08,$01
- .byte $08,$08,$08,$08,$08,$08
- .byte $08,$01,$08,$08,$08,$08
- .byte $08,$08,$08,$01,$08,$08
- .byte $08,$08,$08,$08,$08,$01
- .byte $08,$08,$08,$08,$08
-
- ;---------------------------------------
-
- scroll ldy coltab ;farbtabelle der
- ldx #$00 ;rasterfarben
- scr1 lda coltab+1,x;um ein byte
- sta coltab,x ;nach links
- inx ;rotieren.dadurch
- cpx #$40 ;entsteht ein
- bne scr1 ;feines
- sty colend-1 ;rasterscrolling
- rts ;ende
-
- ;---------------------------------------
-
- init lda #$c7 ;hilfsregister
- sta scrhelp ;setzen
-
- lda #$00 ;counter
- sta flashcount ;initialisieren
- sta flashcount2;
- sta $d020 ;screen und
- sta $d021 ;frame schwarz
- lda #$00 ;schwarzes
- sta $0286 ;farbram
- jsr $e544 ;screen loeschen
-
- ldx #$00 ;"demo test
- init1 lda screen1,x ; grosser
- sta $0454,x ; zeichensatz"
- inx ;auf den
- cpx #$ec ;bildschirm
- bne init1 ;schreiben
-
- ldx #$77 ;"kleiner
- init3 lda screen2,x ; zeichensatz"
- sta $0608,x ;auf den
- dex ;bildschirm
- bpl init3 ;schreiben
-
- ldx #$27 ;farbtabelle
- init4 lda flashtab2,x;in color-ram
- sta $db20,x ;schreiben
- dex ;(fuer's
- bpl init4 ;farbscrolling)
-
- lda #$c7 ;scrollregister
- sta scrollreg ;setzen
- lda #$1c ;zeichensatz
- sta charset ;anschalten
- rts ;ende
-
- ;--"demo test grosser zeichensatz"------
- screen1 .byte $20,$20,$20,$20,$20,$20
- .byte $04,$44,$05,$45,$0d,$4d
- .byte $0f,$4f,$2d,$14,$54,$05
- .byte $45,$13,$53,$14,$54,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$84,$c4
- .byte $85,$c5,$8d,$cd,$8f,$cf
- .byte $ad,$94,$d4,$85,$c5,$93
- .byte $d3,$94,$d4,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20
- .byte $20,$20,$07,$47,$12,$52
- .byte $0f,$4f,$13,$53,$13,$53
- .byte $05,$45,$12,$52,$20,$1a
- .byte $5a,$05,$45,$09,$49,$03
- .byte $43,$08,$48,$05,$45,$0e
- .byte $4e,$13,$53,$01,$41,$14
- .byte $54,$1a,$5a,$20,$20,$20
- .byte $87,$c7,$92,$d2,$8f,$cf
- .byte $93,$d3,$93,$d3,$85,$c5
- .byte $92,$d2,$a0,$9a,$da,$85
- .byte $c5,$89,$c9,$83,$c3,$88
- .byte $c8,$85,$c5,$8e,$ce,$93
- .byte $d3,$81,$c1,$94,$d4,$9a
- .byte $da,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$00
- ;---"kleiner zeichensatz"---------------
- screen2 .text " "
- .text " "
- .text " "
- .text " "
- .text " "
- .text " "
- ;---------------------------------------
-
-